package com.doitedu.day05.oob

/**
 * @Date 22.6.25
 * @Created by HANGGE
 * @Description
 * 构造器:    用于创建对象是调用的特殊的方法
 *          用于给成员赋值 , 初始化信息
 *          在每次创建实例对象时都会调用
 *在创建对象的时候(在JVM中开辟空间创建实例) 调用构造器
 * object的加载是早于对象的  不需要构造器  不能有构造器
 *
 * 定义构造器:
 *   只有类 有构造器
 *   在scala中有  1) 主构造器
 *               2) 辅助构造器
 * 主构造器: 和类交织在一起  类 (参数)
 * 辅助构造器: 在类内部  def  this(参数) {}
 * 1 class _03构造器{}  类默认有一个空参的构造器  -> class _03构造器()
 * 2 class _03构造器(id:Int,name:String)  -> 两个参数 主构造器
 *        注意 上面的书写形式 id name都不是成员变量  只能在类中使用 show() 方法
 * 3  class _03构造器(val id:Int,var name:String)
 *   -> 两个参数    id name 是成员变量  使用var val 修饰
 *   -> val 修饰的成员变量后续的不能再变   var 可变(再次赋值)
 * **************使用  全部成员的构造器  使用空参的************
 * ------------------------辅助构造器-----------------------
 * 辅助构造器  可以在创建对象的时候调用
 *  def  this() = {
 *    首行 : 调用其他构造器
 * }
 * def  this(x:Int) {this()}
 *
 *
 *
 */
class _03构造器(val  id:Int,var name:String){

  def this(){
    this(11,"zss")
    println("创建了对象 ....  调用的是空参构造器")
  }

  def this(x:Int){
    this()
    println("创建了对象 ....  调用的是Int参构造器")
  }


  // 成员方法
/*  def show() = {
    println(id+"-"+name)
  }*/
}

object _03构造器 {
  def main(args: Array[String]): Unit = {
 //   val zss = new _03构造器(1, "zss")
    val zss = new _03构造器(1)
    println(zss.id)
 /*   zss.id = 12
    zss.name = ""*/
  /*  zss.id
    zss.name*/
 /*   zss.show()*/
  }
}
